説明
バグレポート
色の最適化を備えたコンテナ
まとめ
新しいColoredBox
ウィジェットがフレームワークに追加されました。
そしてそのContainer
ウィジェットはそれを使用するために最適化されています
ユーザーが指定した場合color
の代わりにdecoration
。
コンテクスト
を使用するのが非常に一般的ですContainer
次のようなウィジェット:
return Container(color: Colors.red);
以前は、このコードにより、BoxDecoration
実際に背景色をペイントします。
のBoxDecoration
ウィジェットは、以外の多くのケースをカバーします
背景色を塗るだけで、
新しいものほど効率的ではありませんColoredBox
ウィジェット、
これは背景色のみをペイントします。
色に基づいてアサートしたいウィジェットのテスト
ウィジェット ツリー内のコンテナの以前は
を見つけるためにBoxDecoration
実際に手に入れる
容器の色。
今、彼らは、color
財産
でContainer
それ自体、BoxDecoration
として明示的に提供されましたdecoration
財産。
両方を指定してもエラーになりますcolor
とdecoration
にContainer
。
移行ガイド
の色を主張するテストContainer
または、それが作成されることを期待していましたBoxDecoration
変更する必要があります。
移行前のコード:
testWidgets('Container color', (WidgetTester tester) async {
await tester.pumpWidget(Container(color: Colors.red));
final Container container = tester.widgetList<Container>().first;
expect(container.decoration.color, Colors.red);
// Or, a test may have specifically looked for the BoxDecoration, e.g.:
expect(find.byType(BoxDecoration), findsOneWidget);
});
移行後のコード:
testWidgets('Container color', (WidgetTester tester) async {
await tester.pumpWidget(Container(color: Colors.red));
final Container container = tester.widgetList<Container>().first;
expect(container.color, Colors.red);
// If your test needed to work directly with the BoxDecoration, it should
// instead look for the ColoredBox, e.g.:
expect(find.byType(BoxDecoration), findsNothing);
expect(find.byType(ColoredBox), findsOneWidget);
});
タイムライン
リリースされたバージョン: 1.15.4
安定版リリース: 1.17
参考文献
API ドキュメント:
Container
ColoredBox
BoxDecoration
関連する問題:
- 問題 9672
- 問題 28753
関連する PR:
- カラーボックスとコンテナの最適化 #50979